package com.xz.danhuaapi.utils;

//import org.apache.commons.mail.EmailException;
//import org.apache.commons.mail.SimpleEmail;
import org.springframework.stereotype.Component;

import java.util.Random;


/**
 * 获取验证码
 *
 * @author xuzhou
 */
@Component
public class CodeUtils {


    /**
     * 发送邮件代码
     *
     * @param targetEmail 目标用户邮箱
     * @param authCode    发送的验证码
     *                    参考博客：https://blog.csdn.net/m0_66570338/article/details/128994951
     */
    public static String GetEmailCode(String targetEmail, String authCode) {
//        try {
//            // todo 需替换配置  危险
//            // 创建邮箱对象
//            SimpleEmail mail = new SimpleEmail();
//            // 设置发送邮件的服务器
//            mail.setHostName("smtp.qq.com");
////            mail.setHostName("xxxxxxxxxxxxxxx");
//            // "你的邮箱号"+ "上文开启SMTP获得的授权码"
//            mail.setAuthentication("3089438498@qq.com", "jldnfzjwvivkddjf");
////            mail.setAuthentication("xxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxx");
//            // 发送邮件 "你的邮箱号"+"发送时用的昵称"
//            mail.setFrom("3089438498@qq.com", "帅帅");
////            mail.setFrom("xxxxxxxxxxxxxxx", "quick-develop-template");
//            // 发送服务端口
//            mail.setSslSmtpPort(String.valueOf(465));
//            // 使用安全链接
//            mail.setSSLOnConnect(true);
//            System.setProperty("mail.smtp.ssl.enable", "true");
//            System.setProperty("mail.smtp.ssl.protocols", "TLSv1.2");
//            // 接收用户的邮箱
//            mail.addTo(targetEmail);
//            // 邮件的主题(标题)
//            mail.setSubject("验证码");
//            // 邮件的内容
//            mail.setMsg("您的验证码为:" + authCode + "(1分钟内有效)");
//            // 发送
//            mail.send();
//            return "发送成功,请注意查收";
//        } catch (EmailException e) {
//            return e.getMessage();
//        }
        return "";
    }

    /**
     * 生成验证码
     *
     * @param n 验证码位数
     * @return 验证码
     */
    public static String creatCode(int n) {

        StringBuilder code = new StringBuilder();
        Random r = new Random();
        //2.在方法内部使用for循环生成指定位数的随机字符，并连接起来
        for (int i = 0; i < n; i++) {
            //生成一个随机字符：大写 ，小写 ，数字（0  1  2）
            int type = r.nextInt(3);
            switch (type) {
                case 0:
                    char ch = (char) (r.nextInt(26) + 65);
                    code.append(ch);
                    break;
                case 1:
                    char ch1 = (char) (r.nextInt(26) + 97);
                    code.append(ch1);
                    break;
                default:
                    code.append(r.nextInt(10));
                    break;
            }

        }
        return code.toString();
    }
}
